package com.wjtc.common.utils;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.wjtc.common.consts.AppConsts;
import com.wjtc.common.json.JsonObjectMapper;

/**
 *
 * 文件名： com.blog.util.JsonUtil.java
 * 作者：   WenBin
 * 日期：   2017年4月12日
 * 功能说明：JSON工具类
 *
 * =========================================================
 * 修改记录：
 * 修改作者    日期      修改内容
 *
 *
 * =========================================================
 *  Copyright (c) 2010-2011 .All rights reserved.
 */
public class JsonUtil {
	private JsonUtil(){}


	private static final JsonObjectMapper MAPPER = getJsonObjectMapperInstence();

	private synchronized static JsonObjectMapper getJsonObjectMapperInstence(){
		JsonObjectMapper mapper = null ;
		if(MAPPER ==null){
			mapper = new JsonObjectMapper();
			mapper.setDateFormat(new SimpleDateFormat(AppConsts.PTN_DATETIME_SSS));
		}
		return mapper;
	}

	/**
	 *
	 * @Method: com.bozhon.util.JsonUtil.toJSONStringFastJson
	 * @Description: JSON 转 字符串（JACKSON）
	 * @author: WenBin
	 * @date: 2017年4月21日
	 * @version: 1.0
	 * @param obj
	 * @return
	 * @throws JsonProcessingException
	 * String
	 * @update [日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	public static String toJSONStringJackson(Object obj) throws Exception {
		return MAPPER.writeValueAsString(obj);
	}
	
	public static List<String> toObject(String json) throws JsonParseException, JsonMappingException, IOException{
		List<String> list = (List<String>)MAPPER.readValue(json, List.class);
		return list;
	}
}
